﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;
using System.Data;

namespace Control
{
    public class ConP2
    {
        private IVerandering verandering;

        /// <summary>
        /// Dit deel vult de data van de winkel
        /// </summary>
        public ConP2()
        {
            verandering = new PoortP1();
        }

        #region Module Verwijderen
        /// <summary>
        /// Verwijdert een artikel uit de winkel
        /// </summary>
        /// <param name="artikel"></param>
        /// <param name="schap"></param>
        /// <param name="zijde"></param>
        /// <param name="rek"></param>
        public void VerwijderArtikel(Artikel artikel, int schap, int zijde, int rek)
        {
            //verandering.VerwijderArtikel(rek, zijde, schap, artikel);
        }

        /// <summary>
        /// Verwijdert een rek uit de winkel
        /// </summary>
        /// <param name="rek"></param>
        public void VerwijderRek(int rek)
        {
            verandering.VerwijderRek(rek);
        }
        /// <summary>
        /// Verwijdert een schap uit de winkel
        /// </summary>
        /// <param name="rek"></param>
        /// <param name="zijde"></param>
        /// <param name="schap"></param>
        public void VerwijderSchap(int rek, int zijde, int schap)
        {
            verandering.VerwijderSchap(rek, zijde, schap);
        }
        #endregion

        #region Module Toevoegen
        public void CategorieUitsluiten(string Categorie)
        {

        }

        /// <summary>
        /// Voegt een schap toe aan een rek
        /// </summary>
        /// <param name="rek"></param>
        /// <param name="zijde"></param>
        /// <param name="schap"></param>
        public void VoegSchapToe(int rek, int zijde, Schap schap)
        {
            verandering.VoegSchapToe(rek,zijde,schap);
        }
        /// <summary>
        /// Voegt een rek toe
        /// </summary>
        /// <param name="rek"></param>
        public void VoegRekToe(Rek rek)
        {
            verandering.VoegRekToe(rek);
        }
        


        /// <summary>
        /// Voegt een artikel toe aan de winkel
        /// </summary>
        /// <param name="artikel"></param>
        /// <param name="schap"></param>
        /// <param name="zijde"></param>
        /// <param name="rek"></param>
        public void VoegArtikelToe(Artikel artikel, int schap, int zijde, int rek)
        {
            verandering.VoegArtikelToe(rek, zijde, schap, artikel);
        }
        #endregion

        /// <summary>
        /// Voert het algoritme uit wat op dit moment toegekend is aan winkel
        /// </summary>
        public void AlgoritmeUitvoeren(List<string> categoriën, int snelheid, int tijd, double bedrag, double factor)
        {
            verandering.AlgoritmeUitvoeren(categoriën, snelheid, tijd, bedrag, factor);
        }

        /// <summary>
        /// Verander het algoritme naar een ander type (bijv. van tijd naar bedrag)
        /// Gebruik hier de enum TypeAlgoritme voor.
        /// </summary>
        /// <param name="typeAlgoritme"></param>
        public void VeranderAlgoritme(TypeAlgoritme typeAlgoritme)
        {
            verandering.VeranderAlgoritme(typeAlgoritme);
        }

        /// <summary>
        /// Geeft de categorie door aan het model
        /// </summary>
        /// <param name="categorieLijst"></param>
        public void GeefCategorieDoor(List<string> categorieLijst)
        {
            verandering.GeefCategorie(categorieLijst);
        }

        /// <summary>
        /// Slaat afbeelding van plattegrond op
        /// </summary>
        /// <param name="img">plattegronds afbeelding</param>
        public void SlaAfbeeldingOp(System.Drawing.Image img)
        {
            verandering.SlaAfbeeldingOp(img);
        }

        /// <summary>
        /// Voegt POI toe aan abstracte laag
        /// </summary>
        /// <param name="punt">Punt van interesse</param>
        public void VoegPOIToe(POI punt)
        {
            verandering.VoegPOIToe(punt);
        }

        /// <summary>
        /// Stopt het lopen van het algoritme
        /// </summary>
        public void StopAlgoritme()
        {
            verandering.StopAlgoritme();
        }

    }
}
